digraph G {
        fontname = "Bitstream Vera Sans"
        fontsize = 8

        node [
                fontname = "Bitstream Vera Sans"
                fontsize = 8
                shape = "record"
        ]

        edge [
                fontname = "Bitstream Vera Sans"
                fontsize = 8
                arrowhead = "empty"
        ]
        
{% for table in tables %}
       {{ table.getObject() }} [
                label = "{ {{ table.getObject() }}|{% for field in table.getFields() %}- {{ field.getPhpName() }} : {{ field.getDataType() }}\l{% endfor %}|{% for field in table.getFields() %}+ {{ field.getGetterName() }}() : {{ field.getDataType() }}\l{% endfor %}{% for field in table.getFields() %}+ {{ field.getSetterName() }}({{ field.getDataType() }}) : void\l{% endfor %} }"
       ]
{% endfor %}
{% for table in tables %}
{% if table.extends() %}
       {{ table.getExtendedTable().getObject() }} -> {{ table.getObject() }}
{% endif%}
{% endfor %}

{% for table in tables %}
       {{ table.getObject() }}Catalog [
                label = "{ {{ table.getObject() }}Catalog | | + create({{ table.getObject() }}): void\l + update({{ table.getObject() }}): void\l + delete({{ table.getObject() }}): void\l + getById(int): {{ table.getObject() }}\l + getByIds(array): {{ table.getObject() }}Collection\l + getByCriteria(Criteria): {{ table.getObject() }}Collection\l  }"
       ]
{% endfor %}
{% for table in tables %}
{% if table.extends() %}
       {{ table.getExtendedTable().getObject() }}Catalog -> {{ table.getObject() }}Catalog
{% endif%}
{% endfor %}

{% for table in tables %}
       {{ table.getObject() }}Factory [
                label = "{ {{ table.getObject() }}Factory | | + create(): {{ table.getObject() }}\l }"
       ]
{% endfor %}


}